Флаги не меняются.
Команда:
LODSB
Логика:
AL = (DS:SI) if DF = 0 SI = SI + 1 else SI = SI - 1
Команда LODSB передает байт, расположенный по адресу DS:SI в AL, а также инкрементирует или декрементирует SI (в зависимости от состояния признака направления DF), чтобы указатель переместился на следующий байт строки.
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
нет операндов | 12 | - | 1 | LODSB |
(повтор) | 9+13/rep | 1/rep | 1 | REP LODSB |
Примечания:
Хотя и разрешется использовать эту команду в повторном режиме, это почти никогда не делается, т.к. это привело бы к постоянному изменению значения в AL.
Следующий пример иллюстрирует пересылку восьми байтов из INIT_PORT в порт 250. (Не пробуйте делать этого на вашей машине, если Вы не знаете о назначении порта 250.)
INIT_PORT: DB '$CMD0000' ;Строка, которую мы хотим ;переслать CLD ;Будем передвигаться ;в прямом направлении LEA SI,INIT_PORT ;Засылаем в SI стартовый ;адрес строки MOV CX,8 ;CX является счетчиком ;для команды LOOP AGAIN: LODSB ;Загружаем байт в AL... OUT 250,AL ; ...и высылаем его в порт LOOP AGAIN